A computer includes both a physical machine, namely the hardware, and the instructions which cause the physical machine to operate, namely the software. Software includes both application and system programs. If the program is simply to do tasks for a user, such as solving specific problems, it is referred to as application software. If a program controls the hardware of the computer and the execution of the application programs, it is called system software. System software further includes the operating system, the program which controls the actual computer or central processing unit (CPU), and device drivers which control the input and output devices (I/O) such as printers and terminals.
A general purpose computer is fairly complicated. Usually there will be a queue of application programs waiting to use the central processing unit. The operating system will need to determine which program will run next, how much of the CPU time it will be allowed to use and what other computer resources the application will be allowed to use. Further, each application program will require a special input or output device and the application program must transfer its data to the operating system which controls the device drivers.
The operating system is generally too large and complex to be stored in non-volatile Read Only Memory (ROM). Additionally, there are generally periodic chances made to the operating system which makes it impractical to store it in ROM. The operating system is usually stored on a magnetic disk and read into Random Access Memory (RAM) to be executed. The problem is that the access to the disk requires the disk hardware driver and the rest of the system software. It would therefore appear that there is no mechanism to start the computer, since to read the operating system off the disk requires that the operating system be present.
To get around this problem a technique called boot-strapping or booting is used. In booting, a small program is provided in a special ROM, called the boot-ROM. When the computer is first started, the contents in the boot-ROM are read and that program executed. The boot-ROM program is a small program which instructs the CPU where on a disk to find a larger boot program, which is termed the "boot-block" program. It also instructs the CPU how to load the program into memory and execute it. The boot-block program is executed to copy the operating system off the disk. Once the operating system is in memory, it is executed and the computer is completely functional.
A network of general purpose computers may be constructed by having a number of general purpose computers, termed nodes, communicate with one another over a communications link. If the computers are distant from each other, the network is termed a wide area network (WAN), while, if they are close together, for example, in the same building, it is called a local area network (LAN). In one type of LAN, each computer or node is connected to a common communication link by way of an interface, called a network device.
The computers in a network communicate by sending messages to each other. Each message consists of a header field, which contains an identifier which comprises the address of the network device of the computer to which the message is directed and an identifier which comprises the address of the network device of the computer sending the message, and a data field, which contains the information being sent between the computers.
Each network device monitors the messages on the link and copies the message from the link into the computer's memory and notifies the computer if the message header contains the network device's address or if a message header includes a broadcast address, indicating that the message is being sent to all devices on the network or a multicast address, indicating that the message is being sent to all devices within a certain address range. When a computer wishes to transmit information to another computer, it attaches the address of the intended recipient to its own address and attaches both to the information to form a message, which is transmitted over the communication link.
The availability of local area networks has added to the versatility of computers. It did not take users long to realize that the network could make files on disks belonging to one computer system on the network available to all computers on the network. Programs were developed which simplified access to the files on the disks of another computer system. Eventually the concept evolved to assign special functions to certain computers on the network. For example, one computer would assign logical names to each physical device accessible to the network. In that way a user instead of requesting a file on a specified disk on a specified system can simply request the file using some logical name, and a computer on the network which was designated to do the correlation then requests the file on the specified disk and system, treating the disk on that system as if it were the user's local disk. This translation of logical names to physical devices is transparent to the user. The computer doing the translating in this case is termed a disk or file server. Other server functions have been defined, such as a print server, which allows a file to be printed without specifying to which computer the printer is attached.
It is also possible to assign a user to a disk and then use the disk server to connect that user to that disk regardless of what computer on the LAN the user is on. A disk server program, termed a Local Area Disk (LAD), allows a user on one computer to treat a file on a disk on another computer as a virtual disk. This virtual disk acts as if it were a disk on the user's computer.
One of the files which can be accessed across the network are the operating system files. In fact, even before the LAD concept made the access to a file easy, many systems were developed to "downline" load an operating system to a computer on the network. It became unnecessary, therefore, that the computer, which is receiving the operating system, have an operating system on a disk or have a disk at all. For such a system to function, there are only two requirements. The first is that the network device be capable of generating a message and transmitting it over the communications link to request the operating system from another computer on the network. The second is that the network device be capable of loading the operating system it received into memory and causing the CPU to execute it.
In one prior arrangement, upon powering on the computer, the network device transmitted a request to be booted. This request, broadcast to all the other computers on the network, includes a simple message which contains the network device's hardware address. A computer on the network, upon receiving this request, checks its database to determine if it contains a listing identifying an operating system for the requesting computer. If the receiving computer finds the list entry of the requesting computer in its database, it becomes the host computer and retrieves the requested operating system from its disk, attaches the requesting computer's address to the file to form a message, and transmits the message on the network.
The requesting computer receives the message, copies it into its memory, and initiates the operating system execution. Although in principle the loading of an operating system into a computer on the network is simple to understand, its actual implemention is fairly complex.
To go into more detail, upon powering on, the requesting computer performs a self-test/power-up sequence. As part of the sequence, the processor looks for a boot device. If it fails to find a boot device, the processor will allow the network device to request a boot over the network.
Typically, the network device will not use the protocols usually used to communicate between computers. The reason for this is that such protocols are more complex than is necessary for such a simple task, and the network device would have to support a great deal of functionality it would not need. So instead, a simple protocol is used which consists of a small set of specialty messages for performing, testing, making boot requests, etc. (see for example DECnet.TM. Digital Network Architecture Maintenance Operations Functional Specification, order number (AA-x436A-TK DIGITAL EQUIPMENT CORPORATION, MAYNARD, Mass.) The boot request message, for example, might simply contain the code number for a boot request, the code number for the type of device making the request, what type of computer the request is for, and whether the program requested is a boot-strap program or the operating system program. To these codes the network device of the requesting computer attaches its address, and an address indicating this is a broadcast to all other computers on the network.
When another computer on the network receives this message, it takes the hardware address of the message and looks through its list of computers for which it has operating system programs. If it fails to find the hardware address of the requesting computer listed in its database, the receiving computer simply ignores the message. If no computer has responded to the requesting computer within a certain amount of time, the requesting computer will again transmit a boot request. If the receiving computer finds the address of the requesting computer listed in its database, it then determines whether the requesting system's operating system is to be loaded immediately or in a series of steps.
The problem with this method of loading an operating system using the network is that too much information must be contained within the network prior to the boot request. That is, a computer node on the network needs to know, a priori, what programs, including boot programs and operating system, each bootable network computer on the network would require. Further, for the operating system to work with the boot programs, it is necessary that the operating system be modified to contain "hooks" or entry points that the boot-programs can call.